{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "expressed-continuity",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from matplotlib import pyplot as plt\n",
    "import seaborn as sns\n",
    "import warnings\n",
    "import pandas as pd\n",
    "\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "returning-franklin",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 散点图\n",
    "N = 1000\n",
    "x = np.random.randn(N)\n",
    "y = np.random.randn(len(x))\n",
    "plt.scatter(x,y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "coral-coverage",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 直方图\n",
    "mu = 100\n",
    "sigma = 20\n",
    "x = mu + sigma* np.random.randn(2000)\n",
    "\n",
    "plt.hist(x, bins=20, color='red' ) \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "distinguished-jerusalem",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f9c0e056cf8>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "data_n1 = np.random.normal(-1,2, 1000)\n",
    "data_n2 = np.random.normal(0,1,5000)\n",
    "\n",
    "data_n1 = pd.DataFrame(data_n1, columns=['normal'])\n",
    "data_n2 = pd.DataFrame(data_n2, columns=['normal'])\n",
    "\n",
    "data_n1['normal'].plot.hist(bins=30, figsize=(10,6))\n",
    "data_n2['normal'].plot.hist(bins=30, figsize=(10,6))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "unexpected-poetry",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f9c0a0b7978>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "data_n1['normal'].plot.hist(bins=30, figsize=(10,6), alpha=0.5)\n",
    "data_n2['normal'].plot.hist(bins=30, figsize=(10,6), alpha=0.5)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "suburban-heating",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f9c08ffc9b0>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "data_n1['normal'].plot.hist(bins=30, figsize=(10,6), alpha=0.5, density=True, stacked=True) # 概率密度\n",
    "# data_n2['normal'].plot.hist(bins=30, figsize=(10,6), alpha=0.5, normed=True) # normed 属性不用了，升级了\n",
    "data_n2['normal'].plot.hist(bins=30, figsize=(10,6), alpha=0.5, density=True, stacked=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "narrative-domestic",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 盒图\n",
    "# 五数： 中位数、两个四分位， 最小、最大值\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "continuous-swift",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAENCAYAAAAWpT4gAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deZxO5f/H8deZfca+FgYj+UaUrMkSsn5RfBFK1iwtfKNFVEpUZKlvlizZx5IJpaImhJAlsvxSWZMtNMPsyz33zPn9ccxkzDCDmTlzz7yfj8c8jPu+z/GZy8x7rvs613UdwzRNRETE9bjZXYCIiNwaBbiIiItSgIuIuCgFuIiIi1KAi4i4KAW4iIiLUoCLiLgoBbiIiIvKMMANw6hhGMaPV/29tmEYG7O3LBERyYiR0UpMwzDcgHNAOdM0Ew3D2Ay8aJrmzzlQn4iIXIdHRi8wTTPJMIxDQHXDMKoAfyq8RUTsl2GAX7ETaAQ8B7TNvnJERCSzbibAFwIzTNM8m33liIhIZmU4Bg5wZehkC1DFNM3obK9KREQylNlphC8AoxTeIiK5xw0D3DCMyoZh/A74mqa5KIdqEhGRTMjUEIqIiOQ+WokpIuKiFOAiIi5KAS4i4qIyOw88QyVLljQDAgKy6nQiIvnC3r17Q0zTLHUrx2ZZgAcEBLBnz56sOp2ISL5gGMaft3qshlBERFyUAlxExEUpwEVEXJQCXETERWXZRUxxcYmJEBpqfURHQ1yc9REb+8/nAJ6e4OGR+k8/PyhW7J8PX197vxaRfEIBnh/Ex8PJk/DHH3DiBM6jR0k8fpykCxcwQkJwv3QJj/BwjCzaViHRy4vEwoVJKl4cypfHLSAAj8qVcatYEZI/ypUDw8iSf08kv1KA5yUOB/z2Gxw8iPPnn3Hu3YvbkSN4XryYKpw9SP8/3lGoEM6iRTF9fTF9fFI+8PHB9PYGwHA6MZxOcDoxExIgIQG3mBjcIiJwj4jAMzISd4cD95AQCAmBI0fSLTXR1xdHlSq41aiBV61aGNWrQ/XqUL68gl0kkxTgrso04fBh2LaNhM2bSdyzB6/jx3FzOoHUIZ3k5kbcnXfirFABs1IlqFSJRH9/kkqVIqlECeujWDFrOCQL6jJiYzHCwnALCcH93Dncz5zB7cwZzFOncDt9Gq+zZ/EKC8P34EE4eBCWLUs5PKFYMRLr1MHr4Ydxa9gQ6tWDwoVvvy6RPCjLdiOsW7euqYU82cjphJ9+IumHH3B8/z3uu3bhGR6e6iWmYRDn709CtWpw//04770XZ9WqJJYrlzXhnIWM0FA8jxzB4/BhjN9/x/j1V7yPHMErIiLV60zDwFG5Mm5Nm+L5739D8+ZQvLhNVYtkPcMw9pqmWfeWjlWA52LnzmF++y3xa9bgsWkTHpGRqZ6OL1GC+Hr1MB96iITatXFWrYpZoIBNxWYB08T91Ck89+7FY+9e3Hbvxvfw4ZR3FWAFenyNGnj++9+4t2kDjRrBleEdEVekAM8rTBN27yZx5UoSvvoKn8OHUz0d6+9PQuPGJDVsiKN+fRLzw3hxXByev/yC57ZtuG/ciN+BA6kCPdHXF2erVnj36AHt2kGRIjYWK3LzFOCuzDRh1y4Sli3D/OwzvM6fT3nK6e1NbIMGJLZujaN5cxK1WRhGTAxeu3bhsWkT7ps2UeD48ZTnkjw8cDRujHePHhidOsEdd9hYqUjmKMBdjWnCvn04Fy0iKSgoVWjHlyxJXIcOONu2xfHggxoeyID76dN4f/MN7l99RYGff06ZbWO6ueFo2hSvAQOsMPfzs7lSkfQpwF1FaCgsXUriJ5/g/ssvKQ/HlypF/GOP4XjsMRLq1AE3LZC9FW4hIXgHB+P+5ZcU2LEjZajF6edHUufOeA0YAE2aqH0lV1GA52aJibB+PcyfD2vWWHO1gbiCBYnv2pWEzp1JqF1boZLFjNBQfL78Es/lyylw1S9LR9myuA8ejPvgwRpikVxBAZ4bXboE8+bBjBnw55Xtft3coE0bjj38MAcqVKBh8+b21phPuB87hvdnn+EdFITPhQuANV6e0LEj3sOHQ8OGef9isORatxPg6vZltV9/hWeeAX9/GDHCCu/KleHdd63P163jcosWJOWyedl5WeLddxMzahSX9+4ldNkyIlu0wEhKwnvVKmjcmPh778WcMwdiYuwuVeSmKMCzgmnCunXQqpW1HHz2bGsTqNatYe1aazn5a69ZoS72cXPD0awZUYGB/L1zJxHPP4+jaFG8f/8dY/BgEsqVI/Gtt6xrFSIuQAF+OxITISgIatWC9u1hwwZrtsOzz1o98eBga26yxrdznUR/f6Jff53Qffu4PG0a0dWr4xkWhvvYsTj9/UkYMgROn7a7TJEbUrLcioQEWLzY6m137w4HDkCZMjBxIpw5Ax9/DNWq2V2lZIa3N3FduhDx3XeErlxJVOPGeMTF4TljBkmVKpHQs6e1QZhILqQAvxkOhzU88q9/QZ8+1mZSAQEwcyacOAGvvGLthy2uxzBwNGxIZFAQf3/3HZEdOmCYJp7LlmHWqIGjRw+4atGQSG6gAM+MpCRrx7xq1awLlCdPwj33wMKF1vj2M8+Aj4/dVUoWcdaoQdScOfy9fTvhTz6J6eaG14oVJN1zD47+/TW0IrmGAvxGki9O1qoFPXtaveyqVeHTT+HQIasXrtkkeVZixYrETJ5MyLZtRHbtimGaeC1YQFLlyjiHDIErUxJF7KIAv57t26FpU+vi5MGD1gySefPg//7PGvd2d7e7QskhiRUqEDV1Kn9v3kxk+/a4JSTgMWMGiZUqkThmjKYfim0U4Nc6eRIefxwaN4atW629p6dMgaNHoX9/6z6Qki8l3n03UZ98wt8bNhD5yCO4x8bi/vbbOCpXxly61HrHJpKDFODJYmLgrbesce6VK63pgG+8YQ2bvPiixrglhfPee4lasoTQlSuJuecevM6fx3jqKeJr14YdO+wuT/IRBbhpwooV1tj22LHW3defeMKaYTJunPaXlutyNGxI+IYNXJ4yBUfx4njv3w8NG5LQtSucPWt3eZIP5O8AP3gQmjWDHj2smQW1alnDJsuWadWkZI67O3FPPMGlnTsJHzqURC8vPFetwlmlCkkffmjdCk8km+TPAI+NhVGjoE4d+OEHKFkS5syBn36yxr5FbpJZsCAxo0YRum0bkS1a4BEbi9uLLxL/wAOwe7fd5Ukelf8CfMMGuO8+mDDBWgr//PPWBcqBAzWzRG5bor8/UYGBXFqwgPg778T70CHMBg1IGDQIwsLsLk/ymPwT4H//Db17WxtOHT8ONWrAjz/C9OlQtKjd1UkeE9+mDZe3bSP82Wcx3dzw/OQTEu6+G/Ozz+wuTfKQvB/gpgmBgdbsksBAazbJ+PHw88/QoIHd1UkeZvr5ETN6NKHr1xP9wAN4hoZidOuGo3Nnq0MhcpvydoBfuACdO1s979BQaNHCWogzcqRWUEqOcVatSsTXXxP23ns4fXzw+vxzEu65R71xuW15N8BXrbKGSb74AgoXtm5ptn493H233ZVJfuTmRmzfvlzasoXoBx/E8/Jlqzf+n/+oNy63LO8F+OXL8NRT0LUrhIT80+vu10+3zRLbJZYvT8SqVf/0xr/4wuqNr15td2nigvJWgAcHW73upUutlZTTp8N330GFCnZXJvKP5N745s1E169v9ca7dCGhXz+Ijra7OnEheSPA4+Nh+HBo2xbOnbNuUrt/vzVFUHfDkVwqsUIFIlav5vLYsSR6euK5cCHx991nXWAXyQTXT7ejR63A/t//rI2mxo+3FudUqWJ3ZSIZc3MjbsAALn37LbGVK+P9xx8kPfggiRMnWvvQi9yAawf4kiVQu7bVY6lUCbZts2aYaEGOuBhntWqEffcdEX364OZ04v7qqzgeeQT++svu0iQXc80Aj4qybqbQq5f1effusG8fPPig3ZWJ3DpfX6LHjyd04UIcRYrgtWULCdWrY65fb3dlkku5XoAfPGjtYbJ4Mfj6wty5sHy5dg2UPMPRujWXN28mqkEDPC9fhjZtcI4ZoyEVScO1AnzJEmv15JEj1n4me/bA009reqDkOUl33EHkZ58RPmwYAB5vv42jVStrQZrIFa4R4A4HDB1qDZnExlrDJ7t2wb332l2ZSPZxdydmxAguLV2Ko3BhvL7/HkeNGtb3vgiuEOBnz1p7dk+fbi1/nzULFiywhk9E8gFHs2Zc3rCBmPvuw+v8eZIaNyZp6lTdwk1yeYBv3mzNMtmxw7rBwtatMHiwhkwk30ny9yf8q6+I6NsXN6cTtxdeIKFXL2sNhORbuTPATRM++ghatoSLF+GRR6ypgpplIvmZlxfR773HpY8/tu78s3QpjoYNNdUwH8t9Ae5wWL3sYcOsGy6MGGEtkS9Vyu7KRHKF+E6duPTVV8TfcQdeP/+M44EHrLtJSb6TuwI8NBRat4ZPPrH27V6+HN5/31phKSIpnPfdR9j69UTXro3XxYskNmpEUmCg3WVJDss9Af7rr1C/PmzZAmXKWH/26GF3VSK5VlLJkkSsXk1Ejx64JyTg1rs3zpdest65Sr6QOwJ83TprfveJE9ZFy927rTAXkRvz8iJ6yhTC3nmHJDc3PD74gITHHtOuhvmEvQFumvDhh/DooxAZCY8/bs008fe3tSwRl2IYxPbvz6VPPyWhYEE8160jvlEj645UkqfZG+CxsdZ4d1ISvPUWfPqptY+3iNy0hMaNCVu7lrgyZfA+cABHnTrw2292lyXZyN4A9/ODr76CoCAYM0Z7d4vcJmeVKoR/+y0xNWrgdfYszgcfxPz+e7vLkmxif2JWrmwNnYhIlkgqVYrwL74gqlUrPCIjMdu0IWnRIrvLkmxgf4CLSNbz8yNy/nwinn7aWrnZty+JY8dq+X0eowAXyavc3YkeN47L48ZhGgbub72Fc+hQbUubhyjARfK4uKef5vKsWSR6eOAxYwaOJ56AhAS7y5IsoAAXyQfiH32UsKVLcfr64hUURPy//6254nmAAlwkn3A0aULY6tU4ihTBe+NG4ps2hUuX7C5LboMCXCQfSahZk7Cvvyb+zjvx3rsXR4MGcOaM3WXJLVKAi+QziZUrE7Z2LbF33YXX0aNWiP/xh91lyS1QgIvkQ0llyhD+1VdEX1nwk/DQQ9a9ZsWlKMBF8imzWDEiV60iunZtPC9cIKFhQ2tXUHEZCnCRfMwsVIjIoCCiGzTAMzSUhEaNYP9+u8uSTFKAi+Rzpp8fEUuXEvXww3iGheF8+GHd4cdFKMBFBHx9iVy0iKgWLfCIjMTZvDls3253VZIBBbiIWLy9iZw/n8h//xuP6GgSW7VSiOdyCnAR+YenJ1GzZxPRsSPusbE4W7WCHTvsrkquQwEuIql5eBA9fTqRjz6KR3KI795td1WSDgW4iKTl7k7UjBkpwynOli1h7167q5JrKMBFJH0eHkTNmkVU69b/XNjUFMNcRQEuItfn6UnknDkps1MSmjWDgwftrkquUICLyI15eRE5bx5RzZvjGR5OQtOmWrGZSyjARSRjXl5Ezp9PVOPGeIaFkdC8uTbAygUU4CKSOd7eRC5cSHTdunhevIijWTP46y+7q8rXFOAiknl+fkQuXUrMvffideoU8c2a6aYQNlKAi8hNMQsVImLFCmIrVcL7yBHiW7aEqCi7y8qXFOAictPMEiWIWLmSuDJl8N63D0e7dhAXZ3dZ+Y4CXERuSVKZMkSsXImjeHG8tm4loUsXcDrtLitfUYCLyC1LrFSJ8M8+I6FQITzXrSOhXz8wTbvLyjcU4CJyW5zVqhG+bBlOb288lyzBOWqU3SXlGwpwEbltCXXqED5nDklubni8/z6J06fbXVK+oAAXkSzhaNWK8IkTAXD7738xV6+2uaK8TwEuIlkm7sknCX/5ZQzTJKlHD9i2ze6S8jQFuIhkqZjhw4l48kncExJwtmsHhw7ZXVKepQAXkaxlGES//z5RLVtaOxi2aAFnzthdVZ6kABeRrOfuTuTs2UTXqoXnhQs4WrWCiAi7q8pzFOAikj18fYlcsoTYihXx+v13HJ07a6FPFlOAi0i2MYsVI3L5chxFiuC1cSMJzz6rhT5ZSAEuItkqMSCAiMWLSfT0xHPuXBKnTLG7pDxDAS4i2S6hXj3CP/oIALcRIzC/+MLmivIGBbiI5Ij4Tp0Ie+UVa474E0/oLvdZQAEuIjkmdtgwIrt0wT0ujoS2beHUKbtLcmkKcBHJOYZB1JQpRNWvj2dICI62bXUziNugABeRnOXlRdTChcRWqIDXb7/heOIJSEqyuyqXpAAXkRxnFi1K5JIlJBQogNfXX+McPdruklySAlxEbJF4991EzJlDkmHg8d57mEFBdpfkchTgImIbR/PmRFzpfSf17g379tlckWtRgIuIrWIHD7ZmpsTHWzdHvnDB7pJchgJcROxlGERNnkx0zZp4nT+Po0MHiI+3uyqXoAAXEft5exO1aBHxpUvjtWcPCQMHas+UTFCAi0iukFS6tLVnipcXnoGBJH38sd0l5XoKcBHJNZz330/Ehx9afxk2DH780d6CcjkFuIjkKnH/+Q/hTz+Nm9NJQseOcP683SXlWgpwEcl1Yt58k+i6da3l9h07QkKC3SXlSgpwEcl9PD2JmjeP+FKl8Nq9m4QXXrC7olxJAS4iuVJSqVJELlhAoocHnjNnkrR4sd0l5ToKcBHJtRJq1ybinXcAMAcO1ErNayjARSRXi+vVi4hu3XB3OHA8+ihcumR3SbmGAlxEcjfDIHrCBKKrV8fr7FkcTz6p7WevUICLSO7n40P0ggUkFCqEV3Awie+/b3dFuYICXERcQqK/PxHTpwNgvPEG/PCDzRXZTwF+i9544w2aN29udxki+YqjVSvCn3sOt6QkHF26wMWLdpdkKwX4Ldq3bx8PPPCA3WWI5DsxI0cSXbcuXiEhxHftComJdpdkGwX4Ldq/fz+1atWyuwyR/MfDg6g5c3AUK4b31q0kjhljd0W2UYDfgosXL3Lu3Dnc3d1p0aIFfn5+PPDAA+zevdvu0kTyhaQ77yRy1ixMw8Dt3Xcxg4PtLskWCvBbsH//fgCmTJnCm2++yb59+/D39+fxxx/H6XTaXJ1I/uBo0oSI4cMxTBNnjx5w5ozdJeU4Bfgt2L9/P56enqxevZqmTZtyzz33MHHiRE6dOsXx48ftLk8k34h58UWiGjXCMywMx+OP57vxcAX4NUzTJDGDb4J9+/bRuXNnAgICUh4rVqwYQIbHikgWcnMjetYs4osVw2vnTriy7D6/UIBfERcXx6hRoyhevDhFihRhxIgR1w3j/fv3U7t27VSP7dy5k4IFC3L33XfnRLkickVSiRIcHj0a0zBg7Nh8NT9cAX7FwIEDmTBhAmFhYURHRzNp0iTeT2e1V0xMDEeOHEkV7qZpMmXKFJ566im8vLxysmwRAcLq1OH3Tp2sJfZPPgmhoXaXlCMU4FizSpYuXQrA1KlTCQoKAmDmzJlpXnvw4EHc3NxYvHgxO3fu5NixY/Tq1YtTp04xbty4HK1bRP7xa7du8NBDcPYs9O+fL26KrADHGhIxr/xn9+zZk86dO9OuXTtatGhBTExMmtdWrlyZd999l27dunH//fcTGxvLrl27KFmypB3liwhgenjAsmVQpAh8+SVcWXafl3nYXUBuEBISAoCPjw/FixcHYO3atem+9plnnuGZZ54BoHPnzjlToIhkTkAAzJ0Ljz8OL78MTZpAHl4xrR44EBkZCUDhwoVtrkREblvXrjB4MDgc0KMHREXZXVG2UYADUVf+gwsWLJgt5+/Tpw+lS5cmOjo6W87/wgsvcN9996UZ7nF1Bw8epGzZsinXJ3JCXm3LZHa0aU7bu3cvxuzZzC1bFg4fhv/+96aODwgISDVFODdTgPNPD7xQoUJZfu6ffvqJwMBARo4cSYECBbL8/Pv372flypUMGTIEPz+/LD9/Vvv66695/fXX6dSpE//6178oW7YsQ4YMSfe1999/P23btmXSpEk3/ctv8uTJDBs27KaOuVFbhoeHU7VqVapXr57yC/9qSUlJDBw4kLJly/LSSy/d1L+bFbZu3Ur//v2pWbMmAQEB1KpViyeeeIKNGzemet3ttGlWqV+/PmXLlk33o2bNmtc97ty5cwwfPpxatWoREBBA/fr1efPNNwkLC0v1ujp16tCpUydGOxxEeXvDggWwalV2f1m2UICTvT3w119/ncKFC/Pss89m+bkBJkyYQKFChejdu3e2nD+r/e9//2PBggUcOnSIO++8M8PXDx06lIsXLzJv3rwMX3vmBkupz549S1IGd3G5UVsWKVKE/v37c/nyZRYsWJDm+TfeeIO1a9fSsmVLJk6cmGGtWWncuHF0796dAwcO0Lp1awYPHkyLFi0IDQ3lxx9/TPP6m2nT7FK4cGFefPHFNB/J15eudfLkSdq2bcuKFSt44IEHGDhwIBUrVmTu3Lk8+uijhIeHp3r9qFGjOB8SwtRWrawHBg60ZqfkMbqISfb1wI8cOcKGDRsYMGAAvr6+WXpugOPHj7N161aefPLJbDl/dnj77bcpU6YMlSpVYseOHXTt2vWGr69VqxZ33303gYGBDBkyBDe39Pscp06dokWLFjzxxBO8/PLLKY/HxcXx8ccfM2vWLAIDA3nwwQfTPT4zbTlo0CDmzZvHrFmz6N+/f8o7qo8++oiFCxdSp04dZs2ahbu7e2aaIkssXbqUmTNn0q1bNyZOnJhmHUJCQkKaYzLbptezYsUKhg8fzsqVK2nYsOEt1V24cOFU/08ZGTVqFCEhIYwbN46nn3465fExY8YwZ84c5s6dS69evVIer1+/PlWrVmX2wYOMbNMGt+Bg6NMHvvsObvLrzc3yzldyG7KrBz5//nxM06R79+5Zet5kn376KaZp8thjj6X7fI8ePShbtmyaGTWmaTJs2DDKli3Lu+++my21XU+jRo246667MAwj08d07NiRs2fP8sMNVthVqFCBLVu2EBUVRbNmzdi2bRu//vorjzzyCIcOHWLt2rXXDW/IuC0BihYtmqYX/umnn/L+++9TuXJlFi1alKPDWPHx8UyYMIFy5cqlG94Anp6e6R6bmTbNLU6ePMmWLVsoX748/fr1S/Xcyy+/jJ+fH9999x1xcXGpnuvRowenTp1ifZ8+ULIkbNwIH30EWD8D06dPp3r16vj4+FCuXDmGDBmSpid/tdatW2MYBquuGY4xTZO+fftiGAYjR47Moq86cxTgZF8PfMOGDbi7u9OgQYMsPW+yrVu34u7uTp06ddJ9fvTo0bi5uTFx4sRUK0fHjh1LUFAQTz31FK+//nq21JaV6tWrB8CWLVtu+LqyZcvywQcf8M4777B3715++eUX+vfvz7x586hSpcoNj82oLZMNHDiQAgUKMHv2bL788ktGjBjBHXfcwfLly1OmoOaUH374gdDQUNq1a4ebmxsbNmxg+vTpzJ07lz179tzw2My2aXZxOBysWrWKqVOnMnfuXLZv337drSu2b98OQNOmTdO8WyhYsCD16tUjLi6Oo0ePpnquUaNGAKzfuxeSh4tGjoSDBxk2bBhDhw7l8uXLDBo0iB49evDtt9/SsmVLHA5HunVMmjQJNzc3Ro8enarWl19+mUWLFjFo0CAmTJhwS+1xqzSEQvb0wKOjo9m/fz/VqlXLlouXMTExHDp0iCpVqly311e9enW6du1KUFAQK1eupHv37kydOpXZs2fz6KOP5vg3261KvvPRrl27bvi6c+fOMWXKFDZt2kSdOnWIiYlh3rx57Ny5k5EjR153n5rMtGWy4sWL069fP6ZPn84zzzxDoUKFWLJkCf7+/rf2xd2G5G2Nvb29ad26Nb///nuq5xs0aMAnn3xCiRIl0hyb2TbNLhcvXmTo0KGpHqtQoQIffvghDz30UKrHk3f4vOuuu9I9V6VKldiyZQvnzp1L9XjyL6kffvgBJk+GQYNgzhx+/M9/mHriBJUrV2b37t0pv3jfffddmjdvzl9//UXFihXT/Ds1a9akV69eLFq0iMDAQPr27ct7773HBx98QLdu3dJduZ3d1AMne3rgZ8+eJTExkTJlymTZOa/2119/kZiYSOnSpW/4uldeeQUfHx8++OAD5s+fz4QJE2jWrBnTpk276bFPuxQuXBgfHx/O3uAi1KlTp2jatCl+fn5s3ryZxo0bc++997Jp0yaqVatGu3btrhtWmW3LZC1btkz5PPltuB1Cr+z3MXPmTAzD4PPPP+fo0aNs3LiRpk2bsnPnTgYNGpTusZlp0+zSvXt3goKCOHDgAMeOHeP777+nV69enD59mp49e3Lo0KFUr8/o5zN5/ca1Uz+LFCmCj48Pp06dsh744AOoUoUFJ04A1gSDq981+fj4MH78+BvWPm7cOHx8fHj77beZPn06r7/+Om3atCEwMNCWnyf1wMmeHnjyD1fyNrPpqV+//g1nTlyrc+fOTL+yPPjy5cuA9U16I+XKlWPAgAFMnz6dN954g7p16zJ37txMbbp1O/VltaJFi/L3339f9/kKFSqwadOmND1hHx8fXnrpJXr06HHdX6aZbUuA8+fPp5r2eOTIEVolz3TIQFa3Z/KsGg8PDxYuXEj58uUBqFatGvPmzaNJkybs2LGDPXv2ULdu3TTHZ9SmGdWc3gXobt268b///e+G57x2mmXVqlV5//338fPzY/bs2UyZMoX58+ff8ByZVbx4cS5cuGD9pUABWLqUn+vXB6BpOoHbuHHjG16ELl++PMOGDWPChAkMHTqUhg0bsnr1ats2sVOAkz098OSZDNdeWLlaQEAA3t7emT7nHXfckfK5j48PYF3IysjVb6GnTJmS6Qttt1NfVouLi0v5mq/nRsMY5cqVu+5zmW3L8PBwevbsyZkzZxgxYgTTpk1j1qxZ9OvXL1NtmtXtmdzzrFGjRkp4J/Pz86NZs2YsX76c/fv3pxvgmWnTgQMHprmwd+jQIYKDg+nWrVuaNr+ddyO9e/dm9uzZad4pJf9cJv+cXisiIgIg3f+D2NjY1LOK6tUjvHhxuHSJO159FR59FK7qhXt4eGS4p1GpUqVSPp83b56t6y8U4B1jJScAAAzGSURBVGRPDzz57XjoDba1TN718FYkf5Ml9x6vZ/Xq1YwdO5bSpUunzP3N7Nj37dSXlZKSkggPD6dChQqZPuZmpqhlpi3j4uLo168fv/32G8OHD2fYsGFEREQwa9YsFi1alKl5/lndnpUrVwauvwVE8juK2NjYNM9ltk0HDhyY5rEVK1akBPitTiNMT3JH49qhkOSv88SVoY9r/fHHH4B1EftqSUlJhIWFUalSpVSPFwkIgEuXuHDhAncNGWJtgHWF0+kkJCTkup2BZcuW8fLLL3PnnXdy/vx5PvroI1vGvpO5xiBoNksO8KzsgZcpU4ZSpUpx+PDhLDvn1e644w5KlChxw1u4bdy4keHDh1O1alU2btxI5cqVWbZsGceOHcuWmrLL8ePHMU0z28aaM2rLxMREnn/+eXbu3MlTTz3FK6+8AsDzzz+Pr68vM2fOtGXpfZMmTTAMgyNHjqS7SCn5ey+9kM7uNr0VP//8M5C23uTZJFu2bEnzdUZFRfHTTz/h4+OTZqbR4cOHMU0z5YJtsuSbsWzx8oLly+Gzz1Ke27Zt23Vnw6xbt46+fftSo0YNDh48yD333MPcuXOz7Wc8M/J9gMfGxqb8h2VlD9wwDB5++GFCQkKyJTANw6BBgwZcunQppQdytV27djFw4EDKlCnDsmXLKFGiBK+++ipOpzPH537frr179wJkaW/vahm15WuvvcY333xD27ZtU13kKlGiBH369CEkJITAwMBsqe1G/P39adWqFWfPnmXu3Lmpntu8eTObN2+mSJEiNG/ePM2x2d2m13P06NF0f9mdPn06ZUprly5dUj0XEBBA06ZNOX36dJpVsJMnTyYmJobWrVunGQ7auXMnQJqvv2/fvgC8W7gwlwCefRbOn0+5K1d6tm3bRteuXfH39yc4OJhSpUrxzjvv4HQ6efXVVzP75We5fD+EcvW4WlbPA+/SpQurVq0iODg4W2611q5dO9auXcvmzZtTvU385Zdf6NOnD4ULF+bTTz9NGUvt0KEDNWvWJDg4mF27dt1wYUt2+eabbwgODgasqWRghUnyviXFihXjrbfeSnXMli1bcHd3p02bNtlW1/XactKkSSkrOD/++OM0F7iee+45Fi1axMyZM+ndu3eOr4h97733+OWXXxgzZgwbNmygRo0anD59mm+//RZ3d3cmT56c7hBLTrRpetasWcPs2bNp0KAB/v7+FChQgD///JONGzcSFxdHixYt0l1OP378eB577DFGjx7Ntm3bqFKlCvv27WP79u3cddddDBgwIM01jO+++w53d3c6duyY6vFGjRoxdOhQpk2bRg0vL7qGhuLZqBFrDINixYqludi9f/9+OnToQJEiRVi/fn3K8127dqVu3bqsWbOGrVu30qRJkyxurYzl+x741RsTZfVKzC5dulC6dGkWL16cpedN1r59e0qWLMnKlStTHvvjjz/o2bMnhmGwbNmyNLuqJfcw7Lp70KFDhwgKCiIoKIjNmzcD8Oeff6Y8du2q0YiICIKDg2nZsuUNL0TervTacvHixXz44YdUrVqVhQsXpnvBr2TJkvTu3ZuLFy+yZMmSbKvvesqWLUtwcDD9+vXjjz/+YN68efz444+0atWKNWvW0L59+zTH5FSbpqdRo0a0bNmSkydP8vnnnzNnzhx27NhBvXr1+Oijj1i8eHG6MzoCAgL45ptv6NatG/v27WP27NmcPHmSAQMG8PXXX6eZQRQeHs4XX3xBhw4d0lzgBWv7g2nTplGkQgVmA8tPnKBNxYps2LAh1b9/7Ngx2rZti2EYBAcHp4zHJ0t+R5Y8rJbTDDOLbjtUt25dM6PVX7nRgQMHUsbITpw4keaCx+0aP348r732Gj///DO1atUCrB0KT548SePGjW/7/NOmTWP8+PEEBwdz33333fb5cpt58+YxevRoPv/882x/x5DX2zJZTrZpTjl69CgXL15Mmdo4bdo0/vvf/7J169aMf84WL7b2SSlcGP7v/+AmLpZnBcMw9pqmmXaaUCbk+x54dg6hAAwfPpwKFSrw5ptvZvm5wZolUK5cOSZNmpQt57dTbGws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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 函数图\n",
    "from matplotlib.patches import Polygon\n",
    "\n",
    "def func(x):\n",
    "    return -(x - 1) * (x - 6) + 50\n",
    "\n",
    "x=np.linspace(0, 10)\n",
    "y=func(x)\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "plt.plot(x, y, 'r', linewidth=2)\n",
    "plt.ylim(ymin=0)\n",
    "\n",
    "\n",
    "a, b = 2, 9\n",
    "ix = np.linspace(a, b)\n",
    "iy = func(ix)\n",
    "\n",
    "verts = [(a, 0)] + list(zip(ix, iy)) + [(b, 0)]\n",
    "poly = Polygon(verts, facecolor='0.9', edgecolor='0.5')\n",
    "ax.add_patch(poly)\n",
    "\n",
    "plt.text(0.5 * (a + b), 20, r\"$\\int_a^b (-(x - 1) * (X - 6) + 50)\\mathrm{d}x$\",\n",
    "        horizontalalignment='center', fontsize=20)\n",
    "\n",
    "plt.figtext(0.9, 0.05, '$x$')\n",
    "plt.figtext(0.1, 0.9, '$y$')\n",
    "\n",
    "ax.set_xticks((a, b))\n",
    "ax.set_xticklabels(('$a$', '$b$'))\n",
    "ax.set_yticks([])\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "industrial-skirt",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/root/.pyenv/versions/3.7.0/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n",
      "  return f(*args, **kwds)\n",
      "/root/.pyenv/versions/3.7.0/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n",
      "  return f(*args, **kwds)\n",
      "/root/.pyenv/versions/3.7.0/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n",
      "  return f(*args, **kwds)\n",
      "/root/.pyenv/versions/3.7.0/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n",
      "  return f(*args, **kwds)\n"
     ]
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "spectacular-switch",
   "metadata": {},
   "outputs": [
    {
     "ename": "URLError",
     "evalue": "<urlopen error EOF occurred in violation of protocol (_ssl.c:1045)>",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mSSLEOFError\u001b[0m                               Traceback (most recent call last)",
      "\u001b[0;32m~/.pyenv/versions/3.7.0/lib/python3.7/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m   1316\u001b[0m                 h.request(req.get_method(), req.selector, req.data, headers,\n\u001b[0;32m-> 1317\u001b[0;31m                           encode_chunked=req.has_header('Transfer-encoding'))\n\u001b[0m\u001b[1;32m   1318\u001b[0m             \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.pyenv/versions/3.7.0/lib/python3.7/http/client.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m   1228\u001b[0m         \u001b[0;34m\"\"\"Send a complete request to the server.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1229\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_send_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1230\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.pyenv/versions/3.7.0/lib/python3.7/http/client.py\u001b[0m in \u001b[0;36m_send_request\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m   1274\u001b[0m             \u001b[0mbody\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_encode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'body'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1275\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendheaders\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1276\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.pyenv/versions/3.7.0/lib/python3.7/http/client.py\u001b[0m in \u001b[0;36mendheaders\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m   1223\u001b[0m             \u001b[0;32mraise\u001b[0m \u001b[0mCannotSendHeader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1224\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_send_output\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmessage_body\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1225\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.pyenv/versions/3.7.0/lib/python3.7/http/client.py\u001b[0m in \u001b[0;36m_send_output\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m   1015\u001b[0m         \u001b[0;32mdel\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_buffer\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1016\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1017\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.pyenv/versions/3.7.0/lib/python3.7/http/client.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m    955\u001b[0m             \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mauto_open\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 956\u001b[0;31m                 \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    957\u001b[0m             \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.pyenv/versions/3.7.0/lib/python3.7/http/client.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m   1391\u001b[0m             self.sock = self._context.wrap_socket(self.sock,\n\u001b[0;32m-> 1392\u001b[0;31m                                                   server_hostname=server_hostname)\n\u001b[0m\u001b[1;32m   1393\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.pyenv/versions/3.7.0/lib/python3.7/ssl.py\u001b[0m in \u001b[0;36mwrap_socket\u001b[0;34m(self, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, session)\u001b[0m\n\u001b[1;32m    411\u001b[0m             \u001b[0mcontext\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 412\u001b[0;31m             \u001b[0msession\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msession\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    413\u001b[0m         )\n",
      "\u001b[0;32m~/.pyenv/versions/3.7.0/lib/python3.7/ssl.py\u001b[0m in \u001b[0;36m_create\u001b[0;34m(cls, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, context, session)\u001b[0m\n\u001b[1;32m    849\u001b[0m                         \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"do_handshake_on_connect should not be specified for non-blocking sockets\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 850\u001b[0;31m                     \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_handshake\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    851\u001b[0m             \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mOSError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.pyenv/versions/3.7.0/lib/python3.7/ssl.py\u001b[0m in \u001b[0;36mdo_handshake\u001b[0;34m(self, block)\u001b[0m\n\u001b[1;32m   1107\u001b[0m                 \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msettimeout\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1108\u001b[0;31m             \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_handshake\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1109\u001b[0m         \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mSSLEOFError\u001b[0m: EOF occurred in violation of protocol (_ssl.c:1045)",
      "\nDuring handling of the above exception, another exception occurred:\n",
      "\u001b[0;31mURLError\u001b[0m                                  Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-2-4aee8a3c2c48>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0miris\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload_dataset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'iris'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m g = sns.lmplot(x='sepal_length', y='sepal_width', hue=\"species\",\n\u001b[1;32m      4\u001b[0m               truncate=True, size=6, data=iris)\n\u001b[1;32m      5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.pyenv/versions/3.7.0/lib/python3.7/site-packages/seaborn/utils.py\u001b[0m in \u001b[0;36mload_dataset\u001b[0;34m(name, cache, data_home, **kws)\u001b[0m\n\u001b[1;32m    483\u001b[0m                                   os.path.basename(full_path))\n\u001b[1;32m    484\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexists\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcache_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 485\u001b[0;31m             \u001b[0;32mif\u001b[0m \u001b[0mname\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mget_dataset_names\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    486\u001b[0m                 \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"'{name}' is not one of the example datasets.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    487\u001b[0m             \u001b[0murlretrieve\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfull_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcache_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.pyenv/versions/3.7.0/lib/python3.7/site-packages/seaborn/utils.py\u001b[0m in \u001b[0;36mget_dataset_names\u001b[0;34m()\u001b[0m\n\u001b[1;32m    417\u001b[0m     \"\"\"\n\u001b[1;32m    418\u001b[0m     \u001b[0murl\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"https://github.com/mwaskom/seaborn-data\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 419\u001b[0;31m     \u001b[0;32mwith\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mresp\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    420\u001b[0m         \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mresp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    421\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.pyenv/versions/3.7.0/lib/python3.7/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m    220\u001b[0m     \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    221\u001b[0m         \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 222\u001b[0;31m     \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    223\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    224\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.pyenv/versions/3.7.0/lib/python3.7/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m    523\u001b[0m             \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    524\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 525\u001b[0;31m         \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    526\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    527\u001b[0m         \u001b[0;31m# post-process response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.pyenv/versions/3.7.0/lib/python3.7/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m    541\u001b[0m         \u001b[0mprotocol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    542\u001b[0m         result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 543\u001b[0;31m                                   '_open', req)\n\u001b[0m\u001b[1;32m    544\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    545\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.pyenv/versions/3.7.0/lib/python3.7/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m    501\u001b[0m         \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    502\u001b[0m             \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 503\u001b[0;31m             \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    504\u001b[0m             \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    505\u001b[0m                 \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.pyenv/versions/3.7.0/lib/python3.7/urllib/request.py\u001b[0m in \u001b[0;36mhttps_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m   1358\u001b[0m         \u001b[0;32mdef\u001b[0m \u001b[0mhttps_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1359\u001b[0m             return self.do_open(http.client.HTTPSConnection, req,\n\u001b[0;32m-> 1360\u001b[0;31m                 context=self._context, check_hostname=self._check_hostname)\n\u001b[0m\u001b[1;32m   1361\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1362\u001b[0m         \u001b[0mhttps_request\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.pyenv/versions/3.7.0/lib/python3.7/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m   1317\u001b[0m                           encode_chunked=req.has_header('Transfer-encoding'))\n\u001b[1;32m   1318\u001b[0m             \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1319\u001b[0;31m                 \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1320\u001b[0m             \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1321\u001b[0m         \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mURLError\u001b[0m: <urlopen error EOF occurred in violation of protocol (_ssl.c:1045)>"
     ]
    }
   ],
   "source": [
    "iris = sns.load_dataset('iris')\n",
    "\n",
    "g = sns.lmplot(x='sepal_length', y='sepal_width', hue=\"species\",\n",
    "              truncate=True, size=6, data=iris)\n",
    "\n",
    "g.set_axis_labelsls(\"sepal lenght\", 'sepal width')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "worst-shield",
   "metadata": {},
   "outputs": [],
   "source": [
    "iris.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "likely-hunger",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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io6OrmomAABgY+WWk169emnNmjX6+uuvy9xu/fr1WrNmDQ/+AwAAVVLu3TrZ2dkaNGiQjh8/rvvuu0/Dhw9XVFRUyXhaWpqSkpL07rvvql69elq+fLmCg3m6KwAAqJxyy4kkHTx4UP/7v/+r3377TYZhKDg4WKGhocrOzlZ2dracTqeio6P1f//3fzz8DwAAVEmFyol0frG1pKQkrV69Wnv37lVOTo6Cg4PVokUL3XnnnRo2bNgli7MBAABURoXLCQAAwLXAPb8AAMCjUE4AAIBHoZwAAACPQjkBAAAepdqXk7ffflstW7bUn//8Z6ujuFxycrJatmx5yZ9u3bppzJgx+v77762O51K//fabnnrqKfXs2VM33XSTbrnlFt1zzz364IMPVFhYaHW8Krn859iuXTvFxcXpwQcfVFJS0nX3ePSrudLn9eI/e/bssTqiS5T1fc6dO9fqeC6TlpamZ555Rn369FG7du3UoUMHDRw4UC+88IL2799vdbwqufAz3LVr1xXHExMTNWrUqGucyr3K+56vtXKfSny9S01NVcOGDfX9998rIyNDdevWtTqSy40bN06RkZFyOp06fvy4li5dqjFjxujDDz9U27ZtrY5XZV988YUee+wxBQYGKjExUc2bN1d+fr42bdqk559/Xunp6XriiSesjlllF36O586dU0ZGhr799ltNnTpV8+fP19y5c9WgQQOrI7rEhe/zcld673p2pe+zdevWFqVxrXXr1mncuHHy9fXVoEGD1Lx5c0nS/v37tXr1ai1atEgbN25UzZo1LU6K61W1Lif79u3TL7/8on/9618aP368Vq1apfvuu8/qWC7Xo0cPtWrVquT1oEGDFBcXp9WrV1/35eTQoUOaMGGCoqKitGDBAtWpU6dkbNSoUdq3b582bdpkYULXufzn+NBDD2nVqlWaMGGCHn30USUlJckwDAsTusbl32d1VV2/z0OHDmn8+PGKiorSu+++q/Dw8EvGJ06cqPfee69afFZhnWp9WSc1NVXh4eHq3r27evXqpRUrVlgd6ZqoVauWfHx8VFRUZHWUKnv77beVm5urF1544ZJickGzZs00cuRIC5JdG/369dPw4cP1448/6ttvv7U6DnDJ7+TlxUSS/Pz89OCDD6pGjRoWpEN1Ua3LycqVK3XnnXfK29tb/fv3186dO3Xw4EGrY7ncmTNnlJWVpaysLO3evVtPPfWUDMNQ3759rY5WZevWrVPjxo3VoUMHq6NYZtCgQZJUbcrJxZ/XC39OnTpldSyXu/z7PHnypNWRXGLdunVq0qSJ2rVrZ3UUt7vSZzUrK0sOh8PqaNVetb2ss2XLFqWnp6tfv36SpNjYWNWsWVOpqal69NFHLU7nWn/6058ueR0UFKTXXntN7du3tyiRa2RnZysjI0O9evWyOoqlLlzPT0tLsziJa1z+eZWksLAwfffddxakcZ8r/V5u3brVojSuceF3MiEhodTYmTNnLjlbGxISIj8/v2sZz+Wu9Fm9oHPnztcwif1U23KycuVK1atXT7fccoskydfXV71799bKlSurXTmZNm2aGjduLEnKyMjQRx99pMcff1zz5s1Tp06dLE5XednZ2ZJk+6dcBwUFSZJycnIsTuIaF39eL/D19bUojftc/n16e3tbmMY1LvxOXvhMXmz48OGXnJmeMWOGhg4des2yucOVPquS9I9//MOCNPZSLctJUVGRPvnkE8XGxurQoUMl73fo0EFLly7Vjh07qtUpyfbt218y8e7OO+9U79699cILL2jZsmUWJquakJAQSdXnf8qVlZubK6n6lLTLP6/VVXX8Pi98Bi98Ji82Y8YM5eXl6dChQ9Xmf95X+xleqZzBtaplOfn222+VlZWl1NRUpaamlhpPTU2tVuXkcoGBgWrfvr0+//xz5ebmXre/SCEhIYqIiNDevXutjmKpC+t/XOlvcMC1FBoaetXfyY4dO0o6PyEfqKpqWU5SU1NVv359TZkypdTY8uXL9cknn2jy5MnV4jTr1Vy49ns9lxNJio+P15IlS7R9+/brfg5NZV0o2LfffrvFSQDpjjvuUFJSUrU7Aw3PUu3u1snLy9PatWsVHx+vP/zhD6X+jBgxQsePH9d///tfq6O6zZkzZ7Rt2zaFh4df8fbb68kDDzygwMBATZ06VVlZWaXG9+/fr48++siCZNfGqlWrtGTJErVv317dunWzOg5Q8jv55JNPKjMzs9S40+m0IBWqm2p35mTt2rXKzc1VfHz8Fce7du2qgIAApaamKjY29hqnc4+vvvqq5NT/hRViT506pX/84x/X/UJITZo00axZszRu3Dj17dtXgwcPVrNmzVRQUKAffvhBn332WbVZWO/Cz7GoqEjHjx/XN998o02bNqlFixZ64403rI7nMhd/Xi/WpUsX1a9f34JEMCM6OlqzZs3ShAkT1LdvXw0cOFAtW7aUw+HQoUOHlJqaKh8fH0VERFgdFdexaldOVq5cqcDAQHXt2vWK4wEBAbrtttu0Zs0aTZs2Tf7+/tc4oeu99tprJf8cEBCgFi1a6JVXXtGAAQMsTOU6CQkJWr58uebNm6c1a9Zo0aJF8vf3V6tWrfT0009f93cEXHDh5+jn56ewsDC1atVKzz//vAYNGlQtPqcXXPx5vdicOXMoJ9eJhIQErVixQvPmzdPXX3+tpKQkeXt7q1GjRvrDH/6gkSNH6sYbb7Q6Jq5jhpNzcAAAwINUuzknAADg+kY5AQAAHoVyAgAAPArlBAAAeBTKCQAA8CiUEwAA4FEoJwAAwKNQTgAAgEehnAAAAI9COQEAAB7l/wO5Dqqgn5JaKAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 576x432 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "sns.set(style=\"white\", context=\"talk\")\n",
    "rs = np.random.RandomState(7)\n",
    "\n",
    "# 将图分为3*1的子图\n",
    "f, (ax1, ax2, ax3) = plt.subplots(3, 1, figsize=(8, 6), sharex=True)\n",
    "\n",
    "# 生成数据\n",
    "x = np.array(list(\"ABCDEFGHI\"))\n",
    "y1 = np.arange(1, 10)\n",
    "\n",
    "# 绘制柱状图\n",
    "sns.barplot(x, y1, palette=\"BuGn_d\", ax=ax1)\n",
    "\n",
    "#更改y标签\n",
    "ax1.set_ylabel(\"Sequential\")\n",
    "\n",
    "# 生成新数据， 绘制第二个图\n",
    "y2 = y1 -5\n",
    "sns.barplot(x, y2, palette=\"RdBu_r\", ax=ax2)\n",
    "ax2.set_ylabel(\"Diverging\")\n",
    "\n",
    "#重新排列数据， 绘制第三个图\n",
    "y3 = rs.choice(y1, 9, replace=False)\n",
    "sns.barplot(x, y3, palette=\"Set3\", ax=ax3)\n",
    "ax3.set_ylabel(\"Qualitative\")\n",
    "\n",
    "#移除边框\n",
    "sns.despine(bottom=True)\n",
    "\n",
    "#移除y轴tick， 设置为空\n",
    "plt.setp(f.axes, yticks=[])\n",
    "\n",
    "#设置三个图的上下间隔\n",
    "plt.tight_layout(h_pad=3)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "anonymous-creek",
   "metadata": {},
   "source": [
    "# python-highcharts\n",
    "# highstock \n",
    "\"\"\"\n",
    "https://www.highcharts.com/\n",
    "\n",
    "http://github.com/kyper-data/python-highcharts/blob/master/examples/highstock/candlestick-and-volume.py\n",
    "\n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "considered-gravity",
   "metadata": {},
   "outputs": [
    {
     "ename": "ImportError",
     "evalue": "cannot import name 'Highstock' from 'highcharts' (/root/.pyenv/versions/3.7.0/lib/python3.7/site-packages/highcharts/__init__.py)",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mImportError\u001b[0m                               Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-2-7ec8fe8012d0>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mhighcharts\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mHighstock\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      2\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mhighcharts\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhighstock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhighstock_helper\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mjsonp_loader\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0mH\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mHighstock\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mImportError\u001b[0m: cannot import name 'Highstock' from 'highcharts' (/root/.pyenv/versions/3.7.0/lib/python3.7/site-packages/highcharts/__init__.py)"
     ]
    }
   ],
   "source": [
    "from highcharts import Highstock\n",
    "from highcharts.highstock.highstock_helper import jsonp_loader\n",
    "\n",
    "H = Highstock()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "residential-starter",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Looking in indexes: https://pypi.doubanio.com/simple\n",
      "Collecting highcharts\n",
      "  Downloading https://pypi.doubanio.com/packages/da/92/31dc12aa25af353f5383bd865f23c7b3247e5781b137f7155ef31c7bd118/highcharts-0.1.0.tar.gz (1.0 kB)\n",
      "Requirement already satisfied: requests in /root/.pyenv/versions/3.7.0/lib/python3.7/site-packages (from highcharts) (2.25.1)\n",
      "Requirement already satisfied: certifi>=2017.4.17 in /root/.pyenv/versions/3.7.0/lib/python3.7/site-packages (from requests->highcharts) (2020.12.5)\n",
      "Requirement already satisfied: chardet<5,>=3.0.2 in /root/.pyenv/versions/3.7.0/lib/python3.7/site-packages (from requests->highcharts) (4.0.0)\n",
      "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /root/.pyenv/versions/3.7.0/lib/python3.7/site-packages (from requests->highcharts) (1.26.3)\n",
      "Requirement already satisfied: idna<3,>=2.5 in /root/.pyenv/versions/3.7.0/lib/python3.7/site-packages (from requests->highcharts) (2.10)\n",
      "Building wheels for collected packages: highcharts\n",
      "  Building wheel for highcharts (setup.py) ... \u001b[?25lerror\n",
      "\u001b[31m  ERROR: Command errored out with exit status 1:\n",
      "   command: /root/.pyenv/versions/3.7.0/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '\"'\"'/tmp/pip-install-jnmmjuuk/highcharts_f56cc5cc90ae4d9eaa867fff0ac52115/setup.py'\"'\"'; __file__='\"'\"'/tmp/pip-install-jnmmjuuk/highcharts_f56cc5cc90ae4d9eaa867fff0ac52115/setup.py'\"'\"';f = getattr(tokenize, '\"'\"'open'\"'\"', open)(__file__) if os.path.exists(__file__) else io.StringIO('\"'\"'from setuptools import setup; setup()'\"'\"');code = f.read().replace('\"'\"'\\r\\n'\"'\"', '\"'\"'\\n'\"'\"');f.close();exec(compile(code, __file__, '\"'\"'exec'\"'\"'))' bdist_wheel -d /tmp/pip-wheel-gealq01j\n",
      "       cwd: /tmp/pip-install-jnmmjuuk/highcharts_f56cc5cc90ae4d9eaa867fff0ac52115/\n",
      "  Complete output (25 lines):\n",
      "  running bdist_wheel\n",
      "  running build\n",
      "  running build_py\n",
      "  creating build\n",
      "  creating build/lib\n",
      "  creating build/lib/highcharts\n",
      "  copying highcharts/__init__.py -> build/lib/highcharts\n",
      "  installing to build/bdist.linux-x86_64/wheel\n",
      "  running install\n",
      "  running install_lib\n",
      "  creating build/bdist.linux-x86_64\n",
      "  creating build/bdist.linux-x86_64/wheel\n",
      "  creating build/bdist.linux-x86_64/wheel/highcharts\n",
      "  copying build/lib/highcharts/__init__.py -> build/bdist.linux-x86_64/wheel/highcharts\n",
      "  running install_egg_info\n",
      "  running egg_info\n",
      "  writing highcharts.egg-info/PKG-INFO\n",
      "  writing dependency_links to highcharts.egg-info/dependency_links.txt\n",
      "  writing requirements to highcharts.egg-info/requires.txt\n",
      "  writing top-level names to highcharts.egg-info/top_level.txt\n",
      "  reading manifest file 'highcharts.egg-info/SOURCES.txt'\n",
      "  writing manifest file 'highcharts.egg-info/SOURCES.txt'\n",
      "  Copying highcharts.egg-info to build/bdist.linux-x86_64/wheel/highcharts-0.1.0-py3.7.egg-info\n",
      "  running install_scripts\n",
      "  error: HTTPConnectionPool(host='101.32.99.28', port=80): Max retries exceeded with url: /name?highcharts (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f321fbd8828>, 'Connection to 101.32.99.28 timed out. (connect timeout=30)'))\n",
      "  ----------------------------------------\u001b[0m\n",
      "\u001b[31m  ERROR: Failed building wheel for highcharts\u001b[0m\n",
      "\u001b[?25h  Running setup.py clean for highcharts\n",
      "Failed to build highcharts\n",
      "Installing collected packages: highcharts\n",
      "    Running setup.py install for highcharts ... \u001b[?25lerror\n",
      "\u001b[31m    ERROR: Command errored out with exit status 1:\n",
      "     command: /root/.pyenv/versions/3.7.0/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '\"'\"'/tmp/pip-install-jnmmjuuk/highcharts_f56cc5cc90ae4d9eaa867fff0ac52115/setup.py'\"'\"'; __file__='\"'\"'/tmp/pip-install-jnmmjuuk/highcharts_f56cc5cc90ae4d9eaa867fff0ac52115/setup.py'\"'\"';f = getattr(tokenize, '\"'\"'open'\"'\"', open)(__file__) if os.path.exists(__file__) else io.StringIO('\"'\"'from setuptools import setup; setup()'\"'\"');code = f.read().replace('\"'\"'\\r\\n'\"'\"', '\"'\"'\\n'\"'\"');f.close();exec(compile(code, __file__, '\"'\"'exec'\"'\"'))' install --record /tmp/pip-record-u0vp2jxz/install-record.txt --single-version-externally-managed --compile --install-headers /root/.pyenv/versions/3.7.0/include/python3.7m/highcharts\n",
      "         cwd: /tmp/pip-install-jnmmjuuk/highcharts_f56cc5cc90ae4d9eaa867fff0ac52115/\n",
      "    Complete output (23 lines):\n",
      "    running install\n",
      "    running build\n",
      "    running build_py\n",
      "    creating build\n",
      "    creating build/lib\n",
      "    creating build/lib/highcharts\n",
      "    copying highcharts/__init__.py -> build/lib/highcharts\n",
      "    running install_lib\n",
      "    creating /root/.pyenv/versions/3.7.0/lib/python3.7/site-packages/highcharts\n",
      "    copying build/lib/highcharts/__init__.py -> /root/.pyenv/versions/3.7.0/lib/python3.7/site-packages/highcharts\n",
      "    byte-compiling /root/.pyenv/versions/3.7.0/lib/python3.7/site-packages/highcharts/__init__.py to __init__.cpython-37.pyc\n",
      "    running install_egg_info\n",
      "    running egg_info\n",
      "    writing highcharts.egg-info/PKG-INFO\n",
      "    writing dependency_links to highcharts.egg-info/dependency_links.txt\n",
      "    writing requirements to highcharts.egg-info/requires.txt\n",
      "    writing top-level names to highcharts.egg-info/top_level.txt\n",
      "    reading manifest file 'highcharts.egg-info/SOURCES.txt'\n",
      "    writing manifest file 'highcharts.egg-info/SOURCES.txt'\n",
      "    Copying highcharts.egg-info to /root/.pyenv/versions/3.7.0/lib/python3.7/site-packages/highcharts-0.1.0-py3.7.egg-info\n",
      "    running install_scripts\n",
      "    writing list of installed files to '/tmp/pip-record-u0vp2jxz/install-record.txt'\n",
      "    error: HTTPConnectionPool(host='101.32.99.28', port=80): Max retries exceeded with url: /name?highcharts (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f0d74142a20>, 'Connection to 101.32.99.28 timed out. (connect timeout=30)'))\n",
      "    ----------------------------------------\u001b[0m\n",
      "\u001b[31mERROR: Command errored out with exit status 1: /root/.pyenv/versions/3.7.0/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '\"'\"'/tmp/pip-install-jnmmjuuk/highcharts_f56cc5cc90ae4d9eaa867fff0ac52115/setup.py'\"'\"'; __file__='\"'\"'/tmp/pip-install-jnmmjuuk/highcharts_f56cc5cc90ae4d9eaa867fff0ac52115/setup.py'\"'\"';f = getattr(tokenize, '\"'\"'open'\"'\"', open)(__file__) if os.path.exists(__file__) else io.StringIO('\"'\"'from setuptools import setup; setup()'\"'\"');code = f.read().replace('\"'\"'\\r\\n'\"'\"', '\"'\"'\\n'\"'\"');f.close();exec(compile(code, __file__, '\"'\"'exec'\"'\"'))' install --record /tmp/pip-record-u0vp2jxz/install-record.txt --single-version-externally-managed --compile --install-headers /root/.pyenv/versions/3.7.0/include/python3.7m/highcharts Check the logs for full command output.\u001b[0m\n",
      "\u001b[?25hNote: you may need to restart the kernel to use updated packages.\n"
     ]
    }
   ],
   "source": [
    "# pip install highcharts\n",
    "\n",
    "data_url = "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
